package com.omni.monitor.model.threadpool;

import lombok.Data;
import java.util.Date;

/**
 * 线程池动态调整策略
 */
@Data
public class ThreadPoolStrategy {
    // 策略ID（唯一标识）
    private String strategyId;
    // 关联线程池名称（为空表示全局策略）
    private String poolName;
    // 策略名称
    private String strategyName;
    // 触发条件（SpEL表达式，如："activeThreadRatio>90 && queueUsageRatio>70 && duration>=3"）
    private String triggerCondition;
    // 调整动作（JSON格式，如：{"corePoolSize":"+5","maximumPoolSize":"*1.5","queueCapacity":"+200"}）
    private String adjustAction;
    // 恢复条件（SpEL表达式，如："activeThreadRatio<30 && duration>=5"）
    private String recoverCondition;
    // 恢复动作参数（JSON格式，恢复时的具体配置：如"{\"threadCount\":10, \"queueCapacity\":100}"）
    private String recoverAction;
    // 策略状态（0-禁用，1-启用）
    private Integer status;
    // 连续触发次数阈值（满足条件多少次后执行调整）
    private Integer triggerDuration;
    // 连续恢复次数阈值（满足条件多少次后执行恢复）
    private Integer recoverDuration;
    // 创建时间
    private Date createTime;
    // 最后执行时间
    private Date lastExecuteTime;
}